package io;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * 缓冲输出流写出数据的时效性问题（缓冲区问题）
 */
public class BOSDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fis=new FileOutputStream("li.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fis);
        String line="顾不顾江山王侯，管不管时间千秋，求只求爱，化解这万丈红尘混乱永不休";
        byte [] bate=line.getBytes("utf-8");
        bos.write(bate);
        /*
        void flush();
        将缓冲流的缓冲区中已缓存的数据一次性写出。
        注：频繁调用该方法会提高写出的次数降低写出效率。但是可以换来写出
        数据的及时性。
        flush方法是被定义在了输出流的超类上了，这意味着所有的输出流都有flush
        方法，目的是在流连接中传递flush操作给缓冲流输出流。
        其他高级流的flush中只是调用了他链接的流的flush

         */
        bos.flush();
        bos.close();
        /*
         缓冲流的close操纵中会自动调用一次flush，确保所以缓存的数据会被写出
         */
        System.out.println("写入完毕");
    }
}
